//
//  DWJHomeViewController.swift
//  weibo
//
//  Created by 代伟佳 on 16/4/16.
//  Copyright © 2016年 代伟佳. All rights reserved.
//

import UIKit

private let homeCell = "homeCell"

class DWJHomeViewController: DWJVisitorViewController {

    // 保存微博数据数组
    var status: [DWJStatus]?
    
    override func viewDidLoad() {
        super.viewDidLoad()

        
        // 判断用户是否登录
        if !isLogin {

            // 没有登录
            visitorView?.setVisitorInfo(nil, title: nil)
            return
            
        }
    
        setTableViewInfo()
        
        //请求数据
        loadData {[weak self] (statuss) -> () in
    
            self?.status = statuss
            // 刷新UI
            self?.tableView.reloadData()
        }
    }
    
    

    
    
    func setTableViewInfo() {
    
        tableView.registerClass(DWJStatusCell.self, forCellReuseIdentifier: homeCell)
        
        // 设置cell高度
//        tableView.rowHeight = 200
        tableView.rowHeight = UITableViewAutomaticDimension
        tableView.estimatedRowHeight = 300
        
        tableView.separatorStyle = .None
    }
}

extension DWJHomeViewController {

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        return status?.count ?? 0
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCellWithIdentifier(homeCell, forIndexPath: indexPath) as! DWJStatusCell
        
        cell.status = status![indexPath.row]
        
        return cell
    }
}

// MARK: - 请求微博首页数据
extension DWJHomeViewController {

    func loadData(callback: ((statuss: [DWJStatus])->())) {
    
        // 请求url
        let urlString = "https://api.weibo.com/2/statuses/home_timeline.json"
        
        // 请求参数
        let paramater = ["access_token": DWJUersAccountTools.sharedTools.access_token!]
        
        DWJNetWorkTools.sharedTools.request(.GET, urlString: urlString, params: paramater) { (response, error) -> () in
            
            if error != nil {
            
                return
            }
//            print(response)
            guard let array = response?["statuses"] as? [[String: AnyObject]] else {
                
                return
            }

            // 定义一个临时数组
            var tempArr:[DWJStatus] = [DWJStatus]()
            
            for dict in array {
            
                let status = DWJStatus(dict: dict)
                tempArr.append(status)

            }
            
//            print(tempArr.count)
//            print(tempArr[0].user?.mbrank)
            
            // 执行闭包 告诉外界我们的而数据请求成功
            callback(statuss: tempArr)
        }
        
    }
    
}